/*
** Copyright (C) 2010 Calin Radoni
**
** This file is part of CHScanner.
**
** CHScanner is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** CHScanner is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with CHScanner. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#include "PacketDefinitions.h"

#define MAX_COUNT_PHASE 4

enum WorkPhaseType
{
	__wptNone      = 0,
	__wptArp       = 1,
	__wptDiscovery = 2,
	__wptScan      = 3
};

enum WorkMethodType{
	__wmtNone       = 0,
	__wmtArp        = 1,
	__wmtPing       = 2,
	__wmtDns        = 3,
	__wmtSyn        = 4,
	__wmtFin        = 5,
	__wmtNull       = 6,
	__wmtXmas       = 7,
	__wmtAck        = 8,
	__wmtTcpConnect = 9,
	__wmtUdpSend    = 10,
	__wmtIpProtocol = 11,
	__wmtNetBios    = 12,
	__wmtWakeOnLAN  = 13,
	__wmtWinSnmp    = 14,
	__wmtDhcpDiscov = 15,
	__wmt6PingBcast = 16,
	__wmtPromisc    = 17,
	__wmt4PingBcast = 18,
	__wmt6ND        = 19,
	__wmt6MLD       = 20,
	__wmt6Ping      = 21,
	__wmt6Syn       = 22,
	__wmt6Fin       = 23,
	__wmt6Null      = 24,
	__wmt6Xmas      = 25,
	__wmt6Ack       = 26,
	__wmt6UdpSend   = 27,
	__wmt6Proto     = 28,
	__wmtWMI        = 29,
	__wmtIgmp       = 30,
	__wmtShutdown   = 31,

	__wmtHunt       = 100,

	__wmtPassive      = 990,
	__wmtPassiveTCP   = 991,
	__wmtPassiveUDP   = 992,
	__wmtPassiveTCPv6 = 993,
	__wmtPassiveUDPv6 = 994
};

enum ScanOrder{
	__soAsEntered  = 0,
	__soNumeric    = 1,
	__soRandomized = 2
};

#define MAX_COUNT_ARPCOP 4

enum ArpCacheOp{
	__acoIgnore  = 0,
	__acoUse     = 1,
	__acoUpdate  = 2,
	__acoUpdOnly = 3
};

enum LastScanType{
	__lstNone,
	__lstActive,
	__lstPasive,
	__lstHunt
};

enum BuildButtonType{
	__bbtDisabled,
	__bbtWMI,
	__bbtWOL,
	__bbtShutdown
};

class WorkDefinitions
{
public:
	WorkDefinitions(void);
	~WorkDefinitions(void);

	CString GetPhaseName(WorkPhaseType);

	CString GetMethodName(WorkMethodType);
	CString GetMethodParamName(WorkMethodType);
	CString GetMethodDescription(WorkMethodType);

	BuildButtonType GetBuildButtonType(WorkMethodType);

	CString GetScanOrderName(ScanOrder);

	CString GetMimicName(MimicOS);
	
	CString GetArpCacheOpName(ArpCacheOp);

	CString GetDnsQueryTypeName(WORD);

	CString GetShareTypeName(DWORD);
};
